package cn.edu.tju.elm.service;

import cn.edu.tju.elm.model.RewardRule;

import java.math.BigDecimal;
import java.util.List;

/**
 * 奖励规则服务接口
 */
public interface RewardRuleService {
    
    /**
     * 根据权限名称获取奖励规则
     */
    RewardRule getRewardRuleByAuthority(String authorityName);
    
    /**
     * 根据用户ID获取适用的奖励规则
     */
    RewardRule getRewardRuleByUserId(Long userId);
    
    /**
     * 获取默认的用户奖励规则
     */
    RewardRule getDefaultUserRewardRule();
    
    /**
     * 获取商家的奖励规则
     */
    RewardRule getMerchantRewardRule();
    
    /**
     * 获取所有奖励规则
     */
    List<RewardRule> getAllRewardRules();
    
    /**
     * 更新奖励规则
     */
    RewardRule updateRewardRule(String ruleName, String authorityName, BigDecimal minRechargeAmount, 
                               BigDecimal rewardAmount, BigDecimal rewardRate, BigDecimal withdrawFeeRate);
    
    /**
     * 获取当前奖励规则（兼容旧接口）
     */
    RewardRule getRewardRule();
    
    /**
     * 更新奖励规则（兼容旧接口，用于普通用户规则）
     */
    RewardRule updateRewardRule(String ruleName, BigDecimal minRechargeAmount, 
                               BigDecimal rewardAmount, BigDecimal rewardRate, BigDecimal withdrawFeeRate);
}